package com.tul.exercise.base.jmockit.attestandinjectable;

import javax.annotation.Resource;

/**
 *  《JMockit中文网》示例 6
 *
 *  @Tested & @Injectable
 *  场景为例：在买家下订单时，电商网站后台程序需要校验买家的身份（是否合法，例如是否在黑名单中），
 *       若下订单没有问题还要发邮件给买家
 *  订单服务类 ,用于下订单
 */
public class OrderServiceImpl implements  OrderService{
    // 邮件服务类，用于向某用户发邮件。
    private MailService mailService;

    // 用户身份校验类，用于校验某个用户是不是合法用户
    //@Resource
    private UserCheckService userCheckService;

    // 构造函数
    public OrderServiceImpl(MailService mailService) {
        this.mailService = mailService;
    }

    @Override
    public boolean submitOrder(long buyerId, long itemId) {
        // 先校验用户身份
        if (!userCheckService.check(buyerId)) {
            // 用户身份不合法
            return false;
        }
        // 下单逻辑代码，
        // 省略...
        // 下单完成，给买家发邮件
        if (!this.mailService.sendMail(buyerId, "下单成功")) {
            // 邮件发送成功
            return false;
        }
        return true;
    }
}
